package edu.cibertec.sicsolutions.vfs.dao.votacion.ibatis;
import edu.cibertec.sicsolutions.vfs.dao.votacion.CandidatoDao;
import edu.cibertec.sicsolutions.vfs.domain.votacion.Candidato;
import edu.cibertec.sicsolutions.vfs.spring.SpringIbatisBase;
import edu.cibertec.sicsolutions.exception.DaoException;

import java.util.List;
import java.util.Map;

/**
 * Data Access Object Implementation of table CANDIDATO 
 * @author enrique.vargas
 *
 */
public class CandidatoDaoImpl extends SpringIbatisBase implements CandidatoDao {	

	public Candidato getCandidatoByPk(Candidato candidato) throws DaoException{
		try{
			return (Candidato)queryForObject("getCandidatoByPk", candidato);
		} catch(Exception e){
			log.error(e.getMessage(), e);
			throw new DaoException(e.getMessage(), e);
		}		
	}
	
	public void insertCandidato(Candidato candidato) throws DaoException{
		try{
			insert("insertCandidato", candidato);
		} catch(Exception e){
			log.error(e.getMessage(), e);
			throw new DaoException(e.getMessage(), e);
		}		
	}
	
	public void updateCandidato(Candidato candidato) throws DaoException{		
		try{
			update("updateCandidato", candidato);
		} catch(Exception e){
			log.error(e.getMessage(), e);
			throw new DaoException(e.getMessage(), e);
		}
	}
	
	public void updateCandidatoByMap(Map map) throws DaoException{		
		try{
			update("updateCandidatoByMap", map);
		} catch(Exception e){
			log.error(e.getMessage(), e);
			throw new DaoException(e.getMessage(), e);
		}
	}
	
	public void deleteCandidatoByPk(Candidato candidato) throws DaoException{		
		try{
			delete("deleteCandidatoByPk", candidato);
		} catch(Exception e){
			log.error(e.getMessage(), e);
			throw new DaoException(e.getMessage(), e);
		}
	}
	
	public Candidato[] findCandidatoByClass(Candidato candidato) throws DaoException{
		try{
			List list = queryForList("findCandidatoByClass", candidato);
			return (Candidato[])list.toArray(new Candidato[list.size()]);
		} catch(Exception e){
			log.error(e.getMessage(), e);
			throw new DaoException(e.getMessage(), e);
		}
	}
}